<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>绑定样式</title>
        <!-- 引入Vue -->
        <script type="text/javascript" src="../js/vue.js"></script>
        <style>
            .basic {
                border: 1px solid black;
                width: 400px;
                height: 300px;
                margin-top: 10px;
            }
            .happy {
                border: 4px solid red;
                background-color: rgba(255, 255, 0, 0);
                background: linear-gradient(30deg, yellow, pink, orange, yellow);
            }
            .sad {
                border: 4px solid green;
                background-color: grey;
            }
            .normal {
                border: 4px solid white;
                background-color: skyblue;
            }

            .test1 {
                font-size: 50px;
                color: red;
            }
            .test2 {
                font-weight: bold;
            }
        </style>
    </head>
    <body>
        <div id="root">
            <h1>绑定样式</h1>
            <h2>1. class样式</h2>
            <p>写法 :class="xxx", xxx可以是字符串、对象、数组</p>
            <p>字符串写法适用于：类名不确定、要动态获取。</p>
            <p>对象写法适用于：要绑定多个样式，个数不确定，名字也不确定。</p>
            <p>数组写法适用于：要绑定多个样式，个数确定，名字也确定，但不确定用不用。</p>

            <h2>2. style样式</h2>
            <p>:style="{fontSize: xxx}"其中xxx是动态值</p>
            <p>:style="[a, b]"其中a、b是样式对象。</p>

            <p>绑定class样式： 字符串写法，适用于：样式的类名不确定，需要动态指定</p>
            <div class="basic" :class="mood" @click="changeMode">test</div>

            <p>绑定class样式：数组写法，适用于：要绑定的样式个数不确定、名字也不确定</p>
            <div class="basic" :class="classArr">test</div>

            <p>绑定class样式：对象写法，适用于：要绑定的样式个数确定、名字也确定，但要动态决定用不用</p>
            <div class="basic" :class="classObj">test</div>

            <p>绑定style样式：对象写法</p>
            <div class="basic" :style="styleObj">test</div>

            <p>绑定style样式：数组写法</p>
            <div class="basic" :style="styleArr">test</div>
        </div>
        <script type="text/javascript">
            Vue.config.productionTip = false    // 阻止Vue在启动时生成生产提示

            // 创建Vue实例，开端
            new Vue({
                el: '#root', // el用于指定当前Vue实例为哪个容器服务，值通常为css选择器字符串。
                data: {     // data中用于存储数据，数据供el指定的容器去使用
                    mood: 'normal',
                    classArr: ['test1', 'test2'],
                    classObj: {
                        'test1': true,
                        'test2': false
                    },
                    styleObj: {
                        fontSize: '50px',
                        color: 'blue',
                        backgroundColor: 'orange'
                    },
                    styleArr: [
                        {
                            fontSize: '50px',
                            color: 'green',
                        },
                        {
                            backgroundColor: 'gray'
                        }
                    ]
                },
                methods: {
                    changeMode() {
                        const arr = ['happy', 'sad', 'normal']
                        const index = Math.floor(Math.random()*3)
                        this.mood = arr[index]
                    }
                },
            })
        </script>
    </body>
</html>
